home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Libraries / Fab Libraries / Utils6.c < prev    next >
Text File  |  1994-01-03  |  2KB  |  94 lines

  1. /*
  2. Copyright © 1993,1994 by Fabrizio Oddone
  3. ••• ••• ••• ••• ••• ••• ••• ••• ••• •••
  4. This source code is distributed as freeware: you can copy, exchange, modify this
  5. code as you wish. You may include this code in any kind of application: freeware,
  6. shareware, or commercial, provided that full credits are given.
  7. You may not sell or distribute this code for profit.
  8. */
  9.  
  10.  
  11. #pragma load "MacDump"
  12.  
  13. #include    "Utils6.h"
  14.  
  15. typedef struct {
  16.     FSSpec    destFile;
  17.     ScriptCode    theScript;
  18.     } StdFileResult, *StdFileResultPtr;
  19.  
  20.  
  21. #pragma segment Registration
  22.  
  23. OSErr FabFSpOpenDF(const FSSpec *spec,char permission,short *refNum)
  24. {
  25. long    Gresp;
  26. register Boolean    flag = false;
  27.  
  28. if (Gestalt(gestaltFSAttr, &Gresp) == noErr)
  29.     if (Gresp & (1L << gestaltHasFSSpecCalls))
  30.         flag = true;
  31.  
  32. return (flag ?
  33.         FSpOpenDF(spec, permission, refNum) :
  34.         HOpen(spec->vRefNum, spec->parID, &spec->name, permission, refNum));
  35. }
  36.  
  37. OSErr FabFSpCreate(const FSSpec  *spec,OSType creator,OSType fileType, ScriptCode scrTag)
  38. {
  39. long    Gresp;
  40. register Boolean    flag = false;
  41.  
  42. if (Gestalt(gestaltFSAttr, &Gresp) == noErr)
  43.     if (Gresp & (1L << gestaltHasFSSpecCalls))
  44.         flag = true;
  45.  
  46. return (flag ?
  47.         FSpCreate(spec, creator, fileType, scrTag) :
  48.         HCreate(spec->vRefNum, spec->parID, &spec->name, creator, fileType));
  49. }
  50.  
  51. OSErr FabFSpDelete(const FSSpec *spec)
  52. {
  53. long    Gresp;
  54. register Boolean    flag = false;
  55.  
  56. if (Gestalt(gestaltFSAttr, &Gresp) == noErr)
  57.     if (Gresp & (1L << gestaltHasFSSpecCalls))
  58.         flag = true;
  59.  
  60. return (flag ?
  61.         FSpDelete(spec) :
  62.         HDelete(spec->vRefNum, spec->parID, &spec->name));
  63. }
  64.  
  65. void FabStandardPutFile(ConstStr255Param prompt,
  66.                             ConstStr255Param defaultName,
  67.                             StandardFileReply *reply)
  68. {
  69. Point    mypt = {100, 100};
  70. long    Gresp;
  71. register Boolean    flag = false;
  72.  
  73. if (Gestalt(gestaltStandardFileAttr, &Gresp) == noErr)
  74.     if (Gresp & (1L << gestaltStandardFile58))
  75.         flag = true;
  76.  
  77. if (flag) {
  78.     StandardPutFile(prompt, defaultName, reply);
  79.     }
  80. else {
  81.     SFReply    myOldReply;
  82.  
  83.     SFPutFile(mypt, prompt, defaultName, nil, &myOldReply);
  84.     reply->sfGood = myOldReply.good;
  85.     reply->sfReplacing = false;
  86.     reply->sfType = myOldReply.fType;
  87.     reply->sfFile.vRefNum = myOldReply.vRefNum;
  88.     reply->sfFile.parID = *(long *)CurDirStore;
  89.     (void) PLstrcpy(reply->sfFile.name, myOldReply.fName);
  90.     reply->sfScript = smCurrentScript;
  91.     }
  92. }
  93.  
  94.